﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo
{
    class ArraySort2
    {
        public static void Demo01()
        {


                int[] Array = new int[5] { 81, 91, 18, 3, 14 };
                int[] Array1 = new int[6];
                int temp, index = 0, temp1 = 0;
                for (int i = 0; i < Array.Length - 1; i++)
                {
                    for (int k = 0; k < Array.Length - 1 - i; k++)
                    {
                        if (Array[k] < Array[k + 1])
                        {
                            temp = Array[k];
                            Array[k] = Array[k + 1];
                            Array[k + 1] = temp;
                        }
                    }
                } //给数组Array排序

                for (int p = 0; p < Array.Length; p++)
                {
                    Array1[p] = Array[p];
                } //把数组Array内的值过渡到Array1中

                Console.WriteLine("请输入要插入的数字");
                int Number = int.Parse(Console.ReadLine());
                for (int t = 0; t < Array1.Length - 1; t++)
                {
                    if (Number > Array1[t])
                    {
                        index = t;
                        break;
                    }
                    else if (Number < Array1[Array1.Length - 2])
                    {
                        index = 5;
                        break;
                    }

                } // 得到要插入的数在数组内的下标index

                for (int d = Array1.Length - 1; d <= index; d--) //因为0在最后所以是递减的
                {
                    //Array1[d] = Array1[d - 1];
                    if (d == index + 1)
                    {
                        temp1 = Array1[d - 1];
                        Array1[d] = temp1;
                        Array1[d - 1] = Number;
                        break;
                    } // 前两步是复制，和下面的作用一样因为会break跳出循环，第三步将数字替换掉前一位
                    else if (d > index)
                    {
                        temp1 = Array1[d - 1];
                        Array1[d - 1] = Array1[d - 2];
                        Array1[d] = temp1;
                    } //不满足第一个if判断时，把最后一个数复制为前一位的数，直到满足第一个if判断
                    if (d == index)
                    {
                        Array1[d] = Number;
                        break;
                    } //当Nubmer大于数组内的所有数，直接将Array[5]改为Number，然后跳出循环
                }

                for (int j = 0; j < Array1.Length; j++)
                {
                    Console.Write(Array1[j] + " ");
                } //输出出入了数字并且排好序的数组Array1

        }
    }
}
